查看原文
其他

Stata:AIC 和 BIC 准则介绍-aic_model_selection-stepwise

连享会 连享会 2022-12-31

👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 文本分析 | 爬虫 | 机器学习

作者:张迪 (中南财经政法大学)
邮箱:zhangdi_16@126.com


目录

  • 1. 引言

  • 2. 理论背景

    • 2.1 AIC 准则简介

    • 2.2 BIC 准则简介

    • 2.3 应用举例

  • 3. aic_model_selection 命令

    • 3.1 命令介绍

    • 3.2 Stata 实操

  • 4. stepwise 命令

    • 4.1 命令简介

    • 4.2 Stata 实操

  • 5. aic_model_selection 和 stepwise 对比

  • 6. 相关推文



温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

1. 引言

对于参数估计问题,学者在研究时多选择将似然函数作为目标函数,即通过使似然函数最大化实现模型拟合最优。但是模型拟合精度最高并不意味着所选择的模型为最优模型。例如,较多的训练集可以提高模型精度,但随之而来的问题是模型变得更加复杂,甚至导致过度拟合。此时,我们需要借助能够平衡模型精度和复杂度的准则来进行判断。

本文主要介绍在最优模型选择时常用的 AIC 准则和 BIC 准则,以及 Stata 相关命令 aic_model_selectionstepwise

2. 理论背景

2.1 AIC 准则简介

Akaike Information Criterion (AIC) 也被称为赤池信息准则,由日本统计学家赤池弘次在 1974 年提出。它建立在熵的概念上,同时兼顾模型拟合精度和模型参数个数 (复杂度),是拟合精度和参数未知个数的加权函数。AIC 的判断标准是,一般情况下,AIC 越小,模型拟合度越好,并且模型也越精确。AIC 的使用条件是,随机误差项服从正太分布,即 。AIC 的一般表达式为:

其中, 是模型中未知参数的个数, 是模型的对数似然函数, 样本数, 为剩余平方和。由 AIC 表达式可知,要想在候选模型中选取 AIC 最小的模型,有两种途径:

  • 减少未知参数个数:通过加入惩罚项对参数进行筛选,降低过度拟合的可能;
  • 似然函数值变大:模型拟合度越高,似然函数值越大,反之亦然。

由此可知 AIC 准则的重要优点:AIC 准则在合理控制了自由参数的同时,也使得似然函数尽可能大,模型的拟合度尽可能高。

2.2 BIC 准则简介

Bayesian Information Criterion (BIC) 也被称贝叶斯信息准则,它与 AIC 准则相似,也是用于模型选择。当增加参数 的数量时,就增加了模型的复杂度,似然函数也会增大,容易导致过度拟合的现象。

AIC 存在的不足之处:当样本容量很大时,在 AIC 准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系 (一直是 2)。因此当样本容量很大时,使用 AIC 准则选择的模型不收敛于真实模型,它通常比真实模型所含的未知参数个数要多。

BIC 准则也引入了与参数相关的惩罚项,但是 BIC 的惩罚项会更大一点。相对 AIC 而言,BIC 考虑了样本量,样本量较大时,就有效的解决了由于模型精度过高导致的复杂度也较高的问题。

BIC 的一般表达式为:

其中, 是模型中未知参数的个数, 是模型的对数似然函数, 为样本量, 表示惩罚项。在维数过大且训练样本数据相对较少的情况下,可以有效避免模型过于复杂。

AIC 和 BIC 前半部分是惩罚项,当 时,。所以,当样本数量足够大时,BIC 相比 AIC 对模型参数惩罚得更多,导致 BIC 更倾向于选择参数少的简单模型。

2.3 应用举例

假设 是来自总体 的样本。

其中,。如果 的密度函数为:

构造的目标函数 (似然函数) 为:

上式的对数似然函数为:

求一阶偏导和二阶偏导,使 ,可求出参数 的极大似然估计量:

在正态分布的情况, 的极大似然估计量与最小二乘估计量一致。所以,可以用最小二乘法估计得出 的估计量:

将参数估计量代入可得:

其中, 表示参数的个数, 表示的是样本总量。

3. aic_model_selection 命令

3.1 命令介绍

* 命令安装
ssc install aic_model_selection, replace
* 命令语法
aic_model_selection command_name varlist, [ bic ]

其中,

  • command_name:所有逐步回归法适用的命令都可以使用,包括 regresslogistic
  • bic:用 BIC 准则代替 AIC 准则,默认使用 AIC 准则。

实际上,aic_model_selection 命令对一个模型序列执行回归,即按照指定的顺序,每次添加一个 变量。并且对于每次回归,aic_model_selection 都会输出 AIC 值,我们只需选取 AIC 最小的模型即可。

3.2 Stata 实操

. sysuse "auto.dta", clear
. aic_model_selection reg price mpg rep78 headroom trunk weight length turn displacement gear_ratio

AIC Model
1377.079 price mpg
1281.659 price mpg rep78
1283.058 price mpg rep78 headroom
1283.717 price mpg rep78 headroom trunk
1272.309 price mpg rep78 headroom trunk weight
1266.748 price mpg rep78 headroom trunk weight length
1266.328 price mpg rep78 headroom trunk weight length turn
1266.429 price mpg rep78 headroom trunk weight length turn displacement
1265.682 price mpg rep78 headroom trunk weight length turn displacement gear_ratio

在本例中,对影响 price 的 9 个变量依次添加,并进行 9 次 OLS 回归,每次回归所计算的 AIC 值在最前方显示。选择 AIC 最小的模型,即最后一组模型 AIC=1265.682。如此选择存在一个问题,所选择的变量较多,模型较为复杂。换用 BIC 准则查看是否发生了变化。

. aic_model_selection reg price mpg rep78 headroom trunk weight length turn displacement gear_ratio, bic

BIC Model
1381.687 price mpg
1288.361 price mpg rep78
1291.995 price mpg rep78 headroom
1294.887 price mpg rep78 headroom trunk
1285.713 price mpg rep78 headroom trunk weight
1282.387 price mpg rep78 headroom trunk weight length
1284.201 price mpg rep78 headroom trunk weight length turn
1286.535 price mpg rep78 headroom trunk weight length turn displacement
1288.023 price mpg rep78 headroom trunk weight length turn displacement gear_ratio

在使用 BIC 准则之后,结果发生了变化。选择 BIC 最小的模型,即第五组模型 BIC=1282.387。相较于 AIC 准则,BIC 准则所选模型的变量更少,复杂度更低。

4. stepwise 命令

4.1 命令简介

stepwise 是系统自带的命令,无需安装。

* 命令语法
stepwise [, options] : command

options 选项如下:

  • pr(#):从模型中移除的显著性水平;
  • pe(#):从模型中添加的显著性水平;
  • forward:向前逐步选择:
    • 同时指定 pr()pe()、以及 forward 向前逐步选择;
    • 同时指定 pr()pe() 向后逐步选择;
    • 只指定 pr() 向后选择;
    • 只指定 pe() 向前选择。
  • hierarchical:分层选择;
  • lockterml:保留第一项,使其包含在模型中,不受选择标准的约束;
  • lr:用似然比检验代替 Wald 检验。默认是 Wald 检验,即检验是基于估计量的估计方差-协方差矩阵;
  • display_options:控制显示结果的列、列格式和行宽。

必须至少指定 pr(#)pe(#) 中的一个,例如:

stepwise, pr(0.05): command
stepwise, pe(0.05): command
stepwise, pr(0.05) pe(0.05): command

对上述关于 forward 选项进一步展开,例如:

optionsDescription
pr(#)向后选择
pr(#) hierarchical向后层次选择
pr(#) pe(#)逐步向后
pe(#)向前选择
pe(#) hierarchical向前层次选择
pr(#) pe(#) forward逐步向前

command 是指 stepwise 支持的命令,包括:logitpoissonprobitqregregress 等。命令语法如下:

command_name [depvar] term [term ...] [if] [in] [weight] [, command_options]
  • termvarname 或者 (varlist)。其中 varlist 用括号框起来表示为一组变量;
  • depvar:当 command_namestcoxstcrregstintregstreg 时,depvar 不存在,其他情况下,假定 depvar 存在。特别地,对于 intregdepvar 实际上是两个因变量名 (depvar1depvar2)。

4.2 Stata 实操

. sysuse "auto.dta", clear
. //向前选择法
. stepwise, pe(.2) : reg price mpg rep78 headroom trunk weight length turn displacement gear_ratio

Wald test, begin with empty model:
p = 0.0000 < 0.2000, adding displacement
p = 0.0115 < 0.2000, adding rep78
p = 0.0573 < 0.2000, adding headroom
p = 0.1522 < 0.2000, adding weight
p = 0.0361 < 0.2000, adding turn
p = 0.1548 < 0.2000, adding length
p = 0.1550 < 0.2000, adding gear_ratio
p = 0.1415 < 0.2000, adding mpg
Source | SS df MS Number of obs = 69
-------------+---------------------------------- F(8, 60) = 7.84
Model | 294825617 8 36853202.1 Prob > F = 0.0000
Residual | 281971342 60 4699522.36 R-squared = 0.5111
-------------+---------------------------------- Adj R-squared = 0.4460
Total | 576796959 68 8482308.22 Root MSE = 2167.8
------------------------------------------------------------------------------
price | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
displacement | 16.982 8.939 1.90 0.062 -0.899 34.864
rep78 | 742.558 317.252 2.34 0.023 107.958 1377.157
headroom | -594.562 367.208 -1.62 0.111 -1329.088 139.963
weight | 3.935 1.518 2.59 0.012 0.899 6.972
turn | -208.551 130.892 -1.59 0.116 -470.374 53.273
length | -74.935 41.514 -1.81 0.076 -157.976 8.106
gear_ratio | 1645.675 1056.334 1.56 0.125 -467.307 3758.657
mpg | -117.295 78.724 -1.49 0.141 -274.767 40.178
_cons | 10076.632 7125.903 1.41 0.163 -4177.297 24330.560
------------------------------------------------------------------------------
. //向后选择法
. stepwise, pr(.2) : reg price mpg rep78 headroom trunk weight length turn displacement gear_ratio

Wald test, begin with full model:
p = 0.5013 >= 0.2000, removing trunk
Source | SS df MS Number of obs = 69
-------------+---------------------------------- F(8, 60) = 7.84
Model | 294825617 8 36853202.1 Prob > F = 0.0000
Residual | 281971342 60 4699522.36 R-squared = 0.5111
-------------+---------------------------------- Adj R-squared = 0.4460
Total | 576796959 68 8482308.22 Root MSE = 2167.8
------------------------------------------------------------------------------
price | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
mpg | -117.295 78.724 -1.49 0.141 -274.767 40.178
rep78 | 742.558 317.252 2.34 0.023 107.958 1377.157
headroom | -594.562 367.208 -1.62 0.111 -1329.088 139.963
gear_ratio | 1645.675 1056.334 1.56 0.125 -467.307 3758.657
weight | 3.935 1.518 2.59 0.012 0.899 6.972
length | -74.935 41.514 -1.81 0.076 -157.976 8.106
turn | -208.551 130.892 -1.59 0.116 -470.374 53.273
displacement | 16.982 8.939 1.90 0.062 -0.899 34.864
_cons | 10076.632 7125.903 1.41 0.163 -4177.297 24330.560
------------------------------------------------------------------------------

5. aic_model_selection 和 stepwise 对比

根据前面的示例,我们可以看出 aic_model_selection 命令和 stepwise 命令在使用既有共性,也有其特殊的使用场合。其相同点是,都是变量筛选的方法。不同点是:

  • 判断标准不同:aic_model_selection 选择 AIC 值或 BIC 值最小的模型。stepwise 根据指定的显著性水平进行筛选;
  • 选择方法不同:aic_model_selection 只有向前选择。stepwise 有向前选择和向后选择两种选择方法。可针对不同的样本和模型进行选择。

6. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh aic bic 筛选, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:Stata教程
    • Stata检验:AIC-BIC-MSE-MAE-等信息准则的计算
  • 专题:回归分析
    • Stata论文复现:高维线性回归的变量筛选-baing-ocmt
    • combinatorics:模型设定之自动筛选变量
    • gsreg:自动模型设定和变量筛选
  • 专题:面板数据
    • ocmt:高维固定效应模型的变量筛选问题
  • 专题:PSM-Matching
    • Stata:psestimate-倾向得分匹配(PSM)中协变量的筛选
    • Stata:psestimate-倾向得分匹配(PSM)中匹配变量的筛选
  • 专题:时间序列
    • vgets:VAR模型设定和筛选-T240
  • 专题:机器学习
    • 图解Lasso系列A:Lasso的变量筛选能力

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存